
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
/**
 * JavaReadWord
 *
 * @author byc
 * @date 2024-03-29
 */
public class JavaReadWord {

    //替换word里的文字
    public static void changeWord(String filePath){
        try {
            // 读取 Word 文档
            FileInputStream fis = new FileInputStream(filePath);
            XWPFDocument doc = new XWPFDocument(fis);
            fis.close();
            // 遍历文档中的每个段落
            for (XWPFParagraph paragraph : doc.getParagraphs()) {
                // 获取段落中的文本
                String text = paragraph.getText();
                // 替换文本中的目标文字
                if (text.contains("中国移动通信集团江苏有限公司无锡分公司")) {
                    text = text.replace("中国移动通信集团江苏有限公司无锡分公司", "江苏移动信息系统集成有限公司");
                    // 清空原有的文本内容
                    for (int i = paragraph.getRuns().size() - 1; i >= 0; i--) {
                        paragraph.removeRun(i);
                    }
                    // 添加替换后的文本内容
                    XWPFRun run = paragraph.createRun();
                    run.setText(text);

                    // 设置字体为宋体
                    run.setFontFamily("宋体");
                    // 设置字体大小为四号
                    run.setFontSize(14);
                    // 设置加粗
                    run.setBold(true);
                }
            }
            // 保存修改后的 Word 文档
            FileOutputStream fos = new FileOutputStream(filePath);
            doc.write(fos);
            fos.close();
            fis.close();
            doc.close();
            System.out.println( filePath +"替换完成！");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //遍历文件夹
    public static void traverseFolder(File folder) {
        // 遍历文件夹中的所有文件和子文件夹
        for (File file : folder.listFiles()) {
            if (file.isDirectory()) {
                // 如果是文件夹，递归调用 traverseFolder 方法
                traverseFolder(file);
            } else {
                // 如果是文件，检查文件名是否以 ".docx" 结尾
                if (file.getName().toLowerCase().endsWith(".docx")) {
                    // 如果是 Word 文件，执行 changeWord 方法
                    if (file.getName().toLowerCase().startsWith("~")){
                        continue;
                    }
                    changeWord(file.getAbsolutePath());
                }
            }
        }
    }


    public static void main(String[] args) {
        String folderPath = "D:\\桌面文件\\移动工作\\杂活\\重载普货主动安全智能防控监控第三方服务项目服务报告";
        traverseFolder(new File(folderPath));
    }

}
